From: Jonathan Lebon Date: Thu, 4 Jan 2024 16:14:40 +0000 (-0500) Subject: lib/deploy: Add safety margin in early prune space check X-Git-Tag: archive/raspbian/2024.8-1+rpi1^2~7^2~7^2~8^2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=cc5747a60561db0b6c8a534d1556605599192a03;p=ostree.git lib/deploy: Add safety margin in early prune space check There are a few things the estimator doesn't account for, e.g. writing the new BLS entries. Rather than trying to perfect it (since I think we should change approach entirely -- see previous commit message), just add a 1M margin to the space check. --- diff --git a/src/libostree/ostree-sysroot-deploy.c b/src/libostree/ostree-sysroot-deploy.c index d6f3dcb6..5c941d51 100644 --- a/src/libostree/ostree-sysroot-deploy.c +++ b/src/libostree/ostree-sysroot-deploy.c @@ -59,6 +59,12 @@ SD_ID128_MAKE (e8, 64, 6c, d6, 3d, ff, 46, 25, b7, 79, 09, a8, e7, a4, 09, 94) #endif +/* How much additional space we require available on top of what we accounted + * during the early prune fallocate space check. This accounts for anything not + * captured directly by `get_kernel_layout_size()` like writing new BLS entries. + */ +#define EARLY_PRUNE_SAFETY_MARGIN_SIZE (1 << 20) /* 1 MB */ + /* * Like symlinkat() but overwrites (atomically) an existing * symlink. @@ -2541,6 +2547,9 @@ dfd_fallocate_check (int dfd, off_t len, gboolean *out_passed, GError **error) if (!glnx_open_tmpfile_linkable_at (dfd, ".", O_WRONLY | O_CLOEXEC, &tmpf, error)) return FALSE; + /* add the safety margin */ + len += EARLY_PRUNE_SAFETY_MARGIN_SIZE; + *out_passed = TRUE; /* There's glnx_try_fallocate, but not with the same error semantics. */ if (TEMP_FAILURE_RETRY (fallocate (tmpf.fd, 0, 0, len)) < 0)